Technical Field
The present invention relates to code optimization and, more particularly, to cloud-based optimization of applications on mobile devices.
Description of the Related Art
Mobile computing devices have become ubiquitous, with each running a suite of pre-built software and applications that are stored locally. Such applications receive frequent updates, either delivered over the air or by docking with a conventional computer. However, as the number, variety, and sophistication of such applications increases, they can put an increasingly high burden on the relatively limited hardware available on such devices. As such, efficient application execution is a pressing concern.
If an application is statically compiled, with the binary being used across multiple devices, it is difficult to choose optimizations for that binary which reflect individual, per-device execution profiles due to the need to accommodate all of the users who will install it. Even if the application is recompiled for the device using an execution profile, the code is optimized only for that specific profile and does not reflect other possibilities.
Meanwhile, just-in-time compilation of an application in the device can reflect per-device execution profiles, but this compilation consumes processing power, memory, and battery life that would otherwise be needed by the user. In addition, devices having similar execution profiles may have similar optimization needs, and in a just-in-time compilation scenario, multiple devices might perform the same compilations, thereby wasting substantial computing power.